angular.module('kityminderEditor')
    .directive('topTab', function () {
        return {
            restrict: 'A',
            templateUrl: 'ui/directive/topTab/topTab.html',
            scope: {
                minder: '=topTab',
                editor: '='
            },
            link: function (scope) {

                /*
                *
                * 用户选择一个新的选项卡会执行 setCurTab 和 foldTopTab 两个函数
                * 用户点击原来的选项卡会执行 foldTopTop 一个函数
                *
                * 也就是每次选择新的选项卡都会执行 setCurTab，初始化的时候也会执行 setCurTab 函数
                * 因此用 executedCurTab 记录是否已经执行了 setCurTab 函数
                * 用 isInit 记录是否是初始化的状态，在任意一个函数时候 isInit 设置为 false
                * 用 isOpen 记录是否打开了 topTab
                *
                * 因此用到了三个 mutex
                * */
                var executedCurTab = false;
                var isInit = true;
                var isOpen = true;

                scope.setCurTab = function (tabName) {
                    setTimeout(function () {
                        //console.log('set cur tab to : ' + tabName);
                        executedCurTab = true;
                        //isOpen = false;
                        if (tabName != 'idea') {
                            isInit = false;
                        }
                    });
                };

                scope.toggleTopTab = function () {
                    setTimeout(function () {
                        if (!executedCurTab || isInit) {
                            isInit = false;

                            isOpen ? closeTopTab() : openTopTab();
                            isOpen = !isOpen;
                        }

                        executedCurTab = false;
                    });
                };

                //只读和可编辑
                minder.readOnly = function () {
                    if (!this.isReadonly) {
                        this.fire('readonly');
                        this.isReadonly = true;
                        scope.$$childHead.tabs[3].active = true;
                    }
                };
                minder.editable = function () {
                    if (this.isReadonly) {
                        if (minder.isRemote) {
                            toastr.info("远程数据请下载到本地然后加载方可编辑！");
                            return;
                        }
                        editor.container.appendChild(editor.receiver.element)
                        editor.hotbox.$container.appendChild(editor.hotbox.$element);
                        this.enable();
                        this.setStatus("normal", true);
                        this.isReadonly = false;
                        scope.$$childHead.tabs[0].active = true;

                    }
                };

                function closeTopTab() {
                    var $tabContent = $('.tab-content');
                    var $minderEditor = $('.minder-editor');

                    $tabContent.animate({
                        height: 0,
                        display: 'none'
                    });

                    $minderEditor.animate({
                        top: '32px'
                    });
                }

                function openTopTab() {
                    var $tabContent = $('.tab-content');
                    var $minderEditor = $('.minder-editor');

                    $tabContent.animate({
                        height: '60px',
                        display: 'block'
                    });

                    $minderEditor.animate({
                        top: '92px'
                    });
                }
            }
        }
    });